<?php
/**全局基类 goCheck() */
namespace app\api\validate;

use app\lib\exception\ParameterException;
use think\Exception;
use think\Request;
use think\Validate;

class BaseValidate extends Validate{
    public function goCheck(){
        //获取http传入的参数
        //对这些参数做检验
        $request=Request::instance();//拿到request实例对象
        $params=$request->param();//获取所有参数

        $result=$this->batch()->check($params);//记录验证结果
        if(!$result){
            $e=new ParameterException();
            $e->msg=$this->error;
            throw $e;

            // $error=$this->error;//拿到验证信息
            // throw new Exception($error);//抛出异常
        }else{
            return true;
        }
    }

    //验证是否为正整数
    protected function isPositiveInteger($value,$rule= '',$data= '',$field= ''){
        if(is_numeric($value) && is_int($value+0) && ($value+0) > 0){
            return true;
        }else{
            return false;
        }
    }

    //电话校验
    protected function isMobile($value){
        // $rule='^1(3|4|5|7|8)[0-9]\d{8}$^';
        // $rule='^(\d{3,4}-)\d{7,8}$|1(3|4|5|7|8)[0-9]\d{8}$^';
        $rule='^0\d{2,3}-\d{7,8}$|1(3|4|5|7|8)[0-9]\d{8}$^';
        $result=preg_match($rule,$value);
        if($result){
            return true;
        }else{
            return false;
        }
    }

    //不为空
    protected function isNotEmpty($value,$rule= '',$data= '',$field= ''){
        if(empty($value)){
            return false;
        }else{
            return true;
        }
    }

    //根据规则获取数据
    public function getDataByRule($arrays){
        if(array_key_exists('user_id',$arrays)|
            array_key_exists('uid',$arrays))
        {
            //不允许包含user_id或者uid,防止恶意覆盖user_id或者uid外键
            throw new ParameterException([
                'msg'=>'参数中包含有非法的参数明user_id或者uid'
            ]);
        }
        $newArray=[];
        foreach($this->rule as $key=>$value){
            $newArray[$key]=$arrays[$key];
        }
        return $newArray;
    }

}